home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turnbull China Bikeride
/
Turnbull China Bikeride - Disc 1.iso
/
ARMCLUB
/
EUREKA
/
EUREKA29
/
Programs
/
LongFiles
/
!LongFiles
/
!Help
next >
Wrap
Text File
|
1999-01-31
|
23KB
|
585 lines
LongFiles 2 © Jason Tribbeck 1997/8
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This is LongFiles 2. It is a total rewrite of LongFiles, written in C, as
opposed to assembler. Although this makes the code larger, it is much more
maintainable and bugs should be easy to fix.
This !Help contains some of the !Help for version 0.10 (which is the same as
0.11)
############################################################################
## ##
## ---------------------=======< NEWS FLASH >=======--------------------- ##
## ##
## As of version (0.08), !LongFiles has become fully PD, on the condition ##
## that the copyright remains with the author, and this !Help file is ##
## included in full. ##
## ##
## The author has no undertaking to provide support for !LongFiles, but ##
## may be able to provide help if asked in a nice way, and if he has had ##
## a good day :-) ##
## ##
## LongFilenames is (C) Jason Tribbeck/7th ARM Systems 1994. All rights ##
## reserved. ##
## ##
############################################################################
LongFiles 2 is (C) Jason Tribbeck/ARM Designs 1998. All rights reserved.
Major differences between 0.11 and 2.00+
+ Completely rewritten in C;
+ FrontEnd makes it much easier to configure LongFiles and also add filing
systems to it;
+ Different file structure - allows upto 32767 long filenames, and 255
character filenames;
+ Stores first 6 characters of 'real' filename to aid recognition when not
using LongFiles
------------------------------ How it works -------------------------------
If any filenames longer than 10 characters are used, it will store them under
a special filename. Several operating system routines are claimed, which
enable these translations to occur. The special names are the first six
characters of the long filename, followed by a "}", and then a special three
digit code for the file.
For example, the first long filename is "ThisIsALongName". It will be stored
as "ThisIs}000". If you were to add another filename of "SomeOtherLongName",
then this would be "SomeOt}001". If you were to add a further long filename
of "ThisIsAnotherLongName", then it would be "ThisIs}002".
Note that in the desktop, and also the command line, you would not see this
occuring - LongFiles maintains the names when cataloguing, until LongFiles
has been disabled from the filing system.
To do all of this, LongFiles claims parts of the filing system structure,
notably to do with creating, accessing, and listing files. This is performed
using either the FrontEnd, using *Commands, or using the SWI calls.
Once claimed, any filename longer than 10 characters is processed, with the
resultant filename (only composing of short filenames) being passed to the
filing system.
If you decide that you don't need to use LongFiles any more, filing systems
can be released back to their normal operation - note that this is not
updated in the Filer windows, so they will show their LongFile states. Once
you re-open the windows, they will become updated.
If you do this on a directory which has a long filename in it, you will also
notice another file called "!ZZ!!Z!!LF". This special file contains the data
for all the long filenames in a directory. This file is hidden during normal
LongFiles operation, but once the filing system has been released, it can be
viewed, edited or copied. DO NOT MODIFY OR DELETE THIS FILE - LONGFILES MAY
GET VERY CONFUSED!
--------------------------- Using the FrontEnd ----------------------------
When you run !LongFiles, an icon will appear on the right hand side of the
iconbar. This is the LongFiles icon. The only thing you can do with it is
press MENU. This will produce a menu:
Info ->
Filing system ->
Save defaults
Icon by default
------------------
Quit ->
Moving to the right of "Info" will show you the version number of the
FrontEnd, the creation date and the build number.
Moving to the right of "Filing system" will show you all the filing systems
you were running when you ran !LongFiles. If you are not of a technical
persuasion, then there are a lot more than you would have thought! Any that
are ticked have been 'claimed' by LongFiles. If you select a filing system,
then that filing system will be claimed. You should only claim the FileCore
filing systems. A list of the common ones are as follows:
RAM
ADFS
SCSI
IDEFS
IZipFS
ATAFS
You should not share any filing system except these - but there is nothing
stopping you from doing so!
Note that if you have a 'dynamic' filing system, such as IZipFS (ie. you can
quit it and restart it when you want), then the FrontEnd will only recognise
it if you ran the FrontEnd while the filing system was running.
Clicking on "Save defaults" will cause all the filing systems ticked to be
automatically claimed by LongFiles the next time you run it. This makes it
easy to configure what filing systems to use for LongFiles, and you also do
not need to use the *commands, if you have used earlier versions.
If you disable "Icon by default", then the icon will not be displayed. If you
want the icon to be shown, then press ALT while loading the front-end.
Clicking on "Quit" quits the FrontEnd, NOT LongFiles itself. However, if you
do want to quit LongFiles as well, move to the right, and select "Quit
LongFiles as well".
-------------------------------- *Commands --------------------------------
There are currently four *commands:
AddLongFS
~~~~~~~~~
Syntax:
*AddLongFS <fsname>
This adds a filing system to LongFilenames' list. <fsname> is just the filing
system name, with no spaces afterwards.
Example:
*AddLongFS ADFS
AddNoCacheLongFS
~~~~~~~~~~~~~~~~
Syntax:
*AddNoCacheLongFS <fsname>
This is exactly the same as *AddLongFS; it is included because it treated
filing systems differently under 0.11.
Example:
*AddLongFS ADFS
RemoveLongFS
~~~~~~~~~~~~
Syntax:
*RemoveLongFS <fsname>
This is the opposite of *AddLongFS. LongFilenames will detach itself from the
filing system.
Example:
*RemoveLongFS RAM
LongFSList
~~~~~~~~~~
Syntax:
*LongFSList
This lists all the filing systems currently 'claimed' by LongFiles, along
with the filing system numbers, their special filename, their split
character and the maximum filename.
Example:
*LongFSList
RAM (23) - !ZZ!!Z!!LF } 10
ADFS (8) - !ZZ!!Z!!LF } 10
SCSI (26) - !ZZ!!Z!!LF } 10
SpecialLongFS
~~~~~~~~~~~~~
Syntax:
*SpecialLongFS <fsname> <special file> <split character>
This allows you to override the default special filename and default split
character. By default, the special filename is "!ZZ!Z!!LF" (which is used to
store the long filenames), and the split filename is "{". By using this
command, LongFiles can use other filenames/characters, so it can be used, for
example, with OmniClient.
Example:
*SpecialLongFS NFS __LF__NAM (
This says that NFS will use "__LF__NAM" to store the long filenames, and "("
as the split character.
If you want to use it with CDFS, the following standard MUST be adhered to,
as it may be possible for several CD software producers to use LongFiles:
*SpecialLongFS CDFS LONG__FS /
This means that "LONG__FS" and "/" are used.
*SetFSMaxLength
~~~~~~~~~~~~~~~
Syntax:
*SetFSMaxLength <fsname> <characters>
This is used to set the maximum number of characters when checking if a file
exists or not. Normally, this is 10, but for CDFS it is 12 (since the file
"README11/TXT" is 12 characters long and legal).
Example:
*SetFSMaxLength CDFS 12
Debugging
~~~~~~~~~
If you have a debugging version, then the following will be available:
*LongFiles_Log <log_size> <log_level> <filename_to_log>
*LongFiles_NoLog
*LongFiles_Log enables logging to a file.
The file is stored in memory until *LongFiles_NoLog is called. NO CHECKS ARE
PERFORMED AT THIS STAGE TO ENSURE THE FILE IS WRITEABLE.
The memory size used is given as the log_size, which is measured in KBytes,
so if you use the value 100, then 100K is used.
The log level ranges from 0 (minimal level) to 10 (maximum level). A higher
log level increases the amount of log data, whereas a lower value decreases
it. If you are doing logging over a long period, it is best to use a high
value (>1000) to capture all the data. A 24 second "Count" on 662 files with
"Faster" enabled consumed 153K, for example.
*LongFiles_NoLog turns off logging, and writes the log file.
-------------------------- The SWI interface ------------------------------
This information will not be covered in great detail here - when LongFiles
has settled down, it will form an integral part of my FileSuite, which shall
include:
LongDirs
- More than 77 entries per directory;
- This is working kindof, and can be alpha tested upon request (limited
numbers, though);
ShortFiles
- Background compression of data;
HideFiles
- Hide files from being viewed in *cat, *ex and also desktop operation;
- A very cut-down "see-if-it-works" version has been used for about 8 months
on ArgoNet's stand to protect data;
LockFiles
- Much more thorough locking system than *Access;
And some others I can't remember at the moment, but it sounded like fun at
the time!
Since LongFiles will form an integrated part of the FileSuite, here are the
SWI calls for completeness. If you want to use them in your program, call
LongFiles_Version to find out the version number. The SWI interface may
change in later versions, but this will be indicated by the version number
moving on to 3.xx. If you get an error while calling this SWI, you can assume
that the version number is less than 2.08
LongFiles_AddFS (0x4e3c0)
~~~~~~~~~~~~~~~~~~~~~~~~~
Equivalent to *AddLongFS <fsname>
On entry:
R0 is pointer to filing system name to add
LongFiles_RemoveFS (0x4e3c1)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Equivalent to *RemoveLongFS <fsname>
On entry:
R0 is pointer to filing system name to remove
LongFiles_File (0x4e3c2)
~~~~~~~~~~~~~~~~~~~~~~~~
Internal call - do not use
LongFiles_Open (0x4e3c3)
~~~~~~~~~~~~~~~~~~~~~~~~
Internal call - do not use
LongFiles_Func (0x4e3c4)
~~~~~~~~~~~~~~~~~~~~~~~~
Internal call - do not use
LongFiles_EnumerateClaimed (0x4e3c5)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Enumerates list of filing systems 'claimed' by LongFiles. Extended in 2.08.
On entry:
R0 is current slot number (or 0 for first)
R1 is &54504aa9 for extra information (added in 2.08),
On exit:
R0 is next slot (or -1 if none left)
R1 is FS number (or -1 if none left)
If R1=&54504aa9 on entry:
R2 is pointer to special filename
R3 is split character in bits 0..7, maxlength in bits 8..15 (added in 2.10)
or R2,R3 preserved if R0=-1 on exit
Otherwise:
R2,R3 are preserved
LongFiles_SpecialLongFS (0x4e3c6)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This performs the same function as *SpecialLongFS. Introduced into 2.08
On entry:
R0 is pointer to FS name
R1 is pointer to special filename
R2 is split character
LongFiles_FSInitialise (0x4e3c7)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This is used internally when an FS is reinitialised. Introduced into 2.09.
On entry:
R0 is FS number
LongFiles_Version (0x4e3c8)
~~~~~~~~~~~~~~~~~~~~~~~~~~~
This is used to return the LongFiles version number. Introduced into 2.09.
On exit:
R0 is version number multiplied by 100, so for 2.09, 209 is returned.
Note:
If you get an error when calling this SWI, you can assume that the version is
prior to 2.09.
LongFiles_FSKilled (0x4e3c9)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This is used internally, and is functionally the same as LongFiles_RemoveFS,
except it marks the filing system as to be re-initialised if the filing
system restarts again.
On entry:
R0 is pointer to filing system name to be removed
LongFiles_FSMaxLength (0x4e3ca)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This is the same as *SetFSMaxLength, except it can be used to get the maximum
length.
On entry:
R0 is pointer FS name
R1 is length (or 0 to read)
On exit:
R1 is old length (or current length if R1=0 on entry)
---------------------- Front-end command-line options ---------------------
The front-end has a number of command-line options available to it:
-standalone
This will put the front-end into stand-alone mode. It will not initialise
itself to the WIMP, making it suitable for use when booting in the PreDesk
phase. It does, however, read your default filing system selections.
-nochoices
This will force LongFiles NOT to use the "Choices:" directory to store the
LongFiles filing system selections.
By default, LongFiles will use "Choices:JTribbeck.LongFiles" as its defaults
file, unless this option is set, in which case it will use the "Default" file
inside the LongFiles directory. For backward compatibility, LongFiles will
resort to the "Default" file if it cannot find "Choices:JTribbeck.LongFiles".
-optionfile <optionfile>
This will tell LongFiles to use the given options file instead of either
"Choices:JTribbeck.LongFiles" or "<LongFiles$Dir>.Default". This **should
not** be a long files name, as LongFiles would not know where to search as it
would have not been initialised by that time.
---------------------------- Version changes ------------------------------
Changes in version 2.10
~~~~~~~~~~~~~~~~~~~~~~~
+ Fixed problem where DOS-style CDFS files reported the error 'not found' when
>10 character filenames were used;
+ Added *SetFSMaxLength command for the above;
+ Added SWI FSMaxLength for the above;
Changes in version 2.09
~~~~~~~~~~~~~~~~~~~~~~~
+ Added SWI LongFiles_FSInitialise to allow filing systems that have been
removed to be re-claimed when they restart. For example, changing the size
of the RAM disc causes RamFS to be killed and then restarted. Note that the
special names are /not/ stored as yet;
+ Added SWI LongFiles_FSKilled to complement LongFiles_FSInitialise;
+ Added SWI LongFiles_Version to find out the version number;
+ Fixed *Help for SpecialLongFS;
+ Front-end now stores and restores special filename and split character for
stored FSses;
+ Module defaults CDFS to "LONG__FS" and "/" for the special names (as passed
into *SpecialLongFS);
Changes in version 2.08
~~~~~~~~~~~~~~~~~~~~~~~
+ TB001 is now fixed - LongFiles now deletes the LongFiles 0.xx format file
before it creates the LongFiles 2 format file. This is slightly dangerous,
if LongFiles 2 goes wrong while converting, and it cannot fall back to a
LongFiles 0.xx format file, but it won't do that :-) ;
+ You can now set the special filename and the split character used within
LongFiles on a per-FS basis, using *SpecialLongFS. This allows LongFiles
to do its own thing on NFS, CDFS, DOSFS and NTFS. Note that this does
not make it Windoze95, nor RockRidge compatible; it still does its own
translations;
+ LH001 (Lost in History) bug fixed - LongFiles now removes filing systems if
they die - very useful for RAM and IZipFS filing systems;
Changes in version 2.07
~~~~~~~~~~~~~~~~~~~~~~~
+ IR001 (+JT005) should now be fixed - there was two places where the FS
list was being read, with only one of them fixed beforehand;
+ JT006 fixed - Choices$Write is used instead of Choices$Path. Also, if
the front-end is run with Choices$Write **not** set, then "-nochoices"
is assumed for the duration.
Changes in version 2.06
~~~~~~~~~~~~~~~~~~~~~~~
+ Possible fix to IR001: This is an extension of JT005 - sometimes a weird
FS would be displayed in the front-end's list of FSses. After modifying
the code, I haven't seen this again...;
+ Added suggestion JF004: There is now a sub-menu off the Quit icon, which
allows you to kill LongFiles from the front-end;
+ The !Help file has been updated in several areas: some of the links have
been corrected, RB001 has been added, and the information about the
front-end has been updated;
+ Fixed bug SP001: If the last LongFiles item in a directory is deleted using
*Wipe, then will cause the next item not to be erased. This fix cannot be
guaranteed to work with all programs, especially those who multi-task as
they delete. I can do a much better fix, but it will involve keeping zombie
entries until the directory is deleted, which isn't very satisfacturary.
The actual problem is to do with what order files are to be deleted in.
[This was the first bug to be fixed using the Debug version!]
Changes in version 2.05
~~~~~~~~~~~~~~~~~~~~~~~
+ Fixed bug NR001: The results from OS_GBPB 11 were being corrupted. This
could also fix FP003, which is being investigated.
+ Added debug code. This is via two *commands which enable/disable logging.
+ Fixed bug JF001: This is a follow-on from JT002, except I hadn't added
enough characters to check for :(
+ Added suggestion PN001: You can now put !LongFiles into your !Boot's
PreDesk directory, and configure it from there. This is different to the
actual PN001, but provides a much better solution.
Changes in version 2.04
~~~~~~~~~~~~~~~~~~~~~~~
+ Fixed bug FP001: The front-end was claiming rather a lot of memory (1860K).
This has now been reduced to 40K (on a RiscPC);
+ Front-end now shows version number of LongFiles module, as well as compile
number;
+ Fixed bug RW001: LongFile'd filing systems were hiding files - killing
LongFiles showed the files were still there. This may have fixed other
bugs: MB001 may have been fixed.
+ Added suggestion FP002: You can now enable/disable the front-end by ticking
the "Icon by default" menu on the front-end's menu. If it is ticked
(default), then the front-end is in action; if it is unticked, then the
front-end is immediately closed down when all the configured LongFiles
filing systems have been setup. If you hold 'Alt' while running !LongFiles,
then the reverse operation takes place, so you can get the front-end back
if you have disabled it. Comments?
Changes in version 2.03
~~~~~~~~~~~~~~~~~~~~~~~
+ Now uses correct SWI chunk - !Help updated;
+ First released version;
Changes in version 2.02
~~~~~~~~~~~~~~~~~~~~~~~
+ Fixed bug JT001: Renaming a file to a long filename file where a short
filename exists whose first 10 characters are the same as the long
filename's - for example, renaming 'abcdefghij' to 'abcdefghijk' would
fail. This was due to the FS truncating the destination name (LongFiles
does not translate long filenames if it cannot find an entry for it) when
it was looking for the destination name to see if it exists. LongFiles now
reports the non-existience of non-translated files >10 characters in
OS_File 5 and its variants;
+ Fixed bug JT002: Renaming a long filename into another long filename which
had different character casing (eg. a file 'abcdefghijk' exists, and a
rename of 'ABCDEFGHIJK' to 'SomeOtherName') would cause a zombie entry in
the LongFiles table. This would also cause zombie directories to be
maintained. Also checked code for other places where case may cause
confusion;
+ Fixed bug JT003: LongFilenames can use wild characters such as "*" and
"?" in rename - FileSwitch does not seem to do the wild-card checking; it
leaves it up to the filing system;
+ Fixed bug JT004: Errors not being reported correctly from FS;
+ Fixed bug JT005: Some machines reports a small FS name at the top of the
FrontEnd's FS list;
+ Extension to bug JW000: Converting old LongFiles entries with zombies does
not create zombie entries in new LongFiles;
+ Modified version number of FrontEnd to make it more consistent - after all,
this is only the first version of FrontEnd!
Changes in version 2.01
~~~~~~~~~~~~~~~~~~~~~~~
+ Created !Help, and incorporated 0.11 !Help (with reformatting);
+ Fixed bug JW000: Deletion of directories left 'zombie' directories which
could not be deleted if !LongFiles was running - apparently LongFiles 0.11
occasionally exhibited such problems;
+ Fixed bug JT000: New directories would not choose the ids of the previous
cached directory. This also fixed a number of potential problems (such as
not being able to create LongFilenames in some directories) which would not
have shown up until much later;
+ Removed debugging code from FrontEnd;
+ Added code to stop multiple copies of the FrontEnd from running;
Changes in version 2.00
~~~~~~~~~~~~~~~~~~~~~~~
+ Rewritten in C;
+ Added FrontEnd;
+ Uses new format;
+ Converts from LongFiles format 9 files (0.10 and 0.11) to new format - with
other formats being added when needed (everyone should be using 0.11);
+ SWI interface, as well as *command;
+ Module name is now "LongFiles";
--------------------------- Bugs and suggestions --------------------------
If you have any bugs to report, or you have any suggestions, then please view
the LongFiles WWW site - http://www.tribbeck.com/longfiles - there is an FAQ,
as well as the current bug and suggestions. If you don't see your suggestion,
or bug represented there, then please email jason@tribbeck.com.
If you are reporting a bug, please state clearly the bug, and also give a
sequence of events that shows how the bug occuring. For example, the zombie
bug in 2.00 (which was fixed in 2.01) can be repeated:
1. Create a long filenamed directory;
2. Create two short filenamed directories and one long filenamed directory
inside this;
3. Delete the first long filenamed directory;
4. The long filenamed directory is still present, where it should be deleted.
In addition, please put the name of the filing system which experienced the
problem, and your machine details, such as OS version, memory, hard discs and
so forth.
Bugs and suggestions will be posted on the WWW site as often as possible.
Unless stated, I assume that I can put your email address on the site, so
that other users can ask you questions regarding the bug/suggestion. If you
don't want this to happen, please state this clearly in the email.
Each bug and suggestion will be assigned a unique number which will help
identify it - if you have any comments to make to an existing bug or
suggestion, please reference it in the email. This will make tracking a lot
easier.
-------------------------------- Open bugs --------------------------------
Please visit the http://www.tribbeck.com/ web site, as it will be updated as
regularly as possible with the latest bugs as reported from users. This site
will also show the latest version that has been uploaded, and the UK time at
which it was uploaded, so you can make sure that you have the latest version.
------------------------------ Final copyright ----------------------------
LongFilenames is © Jason Tribbeck/ARM Designs 1994-1998. All rights reserved.